package com.justin.demo;

import com.justin.demo.SellTickets003;
import com.justin.demo.SellTickets004;

public class MyDemo004 {

    /**
     *  ReentrantLock问题
     *  相对于synchronized 它具备如下特点
     *  1、可中断
     *  2、可以设置超时时间
     *  3、可以设置为公平锁
     *  4、支持多个条件变量
     *  5、与 synchronized 一样,都支持可重入
     *  上述特点其实就是可以随时调用lock.lock();加锁，随时能调用lock.unlock();释放锁，使用场景比较便利
     *
     *  测试效果同 MyDemo001
     *
     *  测试结果见控制台
     */
    public static void main(String[] args) throws Exception {
        SellTickets004 sellTickets004 = new SellTickets004() ;

        Thread t1 = new Thread(sellTickets004,"窗口1") ;
        Thread t2 = new Thread(sellTickets004, "窗口2") ;
        Thread t3 = new Thread(sellTickets004, "窗口3") ;

        t1.start();
        t2.start();
        t3.start();

    }

}
